digraph "dpmem.c.020i.visibility" {
overlap=false;
subgraph "cluster_dp_strdup" {
	style="dashed";
	color="black";
	label="dp_strdup ()";
	fn_12_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];

	fn_12_basic_block_1 [shape=Mdiamond,style=filled,fillcolor=white,label="EXIT"];

	fn_12_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|ret\ =\ 0B;\l\
|#\ DEBUG\ BEGIN_STMT\l\
|if\ (str\ ==\ 0B)\l\
\ \ goto\ \<bb\ 3\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 4\>;\ [INV]\l\
}"];

	fn_12_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 3\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|D.2332\ =\ 0B;\l\
|//\ predicted\ unlikely\ by\ early\ return\ (on\ trees)\ predictor.\l\
goto\ \<bb\ 7\>;\ [INV]\l\
}"];

	fn_12_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 4\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|_1\ =\ *str;\l\
|if\ (_1\ ==\ 0)\l\
\ \ goto\ \<bb\ 5\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 6\>;\ [INV]\l\
}"];

	fn_12_basic_block_5 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 5\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|D.2332\ =\ \"\";\l\
|//\ predicted\ unlikely\ by\ early\ return\ (on\ trees)\ predictor.\l\
goto\ \<bb\ 7\>;\ [INV]\l\
}"];

	fn_12_basic_block_6 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 6\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|_2\ =\ strlen\ (str);\l\
|_3\ =\ _2\ +\ 1;\l\
|ret\ =\ dp_calloc\ (1,\ _3);\l\
|#\ DEBUG\ BEGIN_STMT\l\
|strcpy\ (ret,\ str);\l\
|#\ DEBUG\ BEGIN_STMT\l\
|D.2332\ =\ ret;\l\
}"];

	fn_12_basic_block_7 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 7\>:\l\
|return\ D.2332;\l\
}"];

	fn_12_basic_block_0:s -> fn_12_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_12_basic_block_2:s -> fn_12_basic_block_3:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_12_basic_block_2:s -> fn_12_basic_block_4:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_12_basic_block_3:s -> fn_12_basic_block_7:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_12_basic_block_4:s -> fn_12_basic_block_5:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_12_basic_block_4:s -> fn_12_basic_block_6:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_12_basic_block_5:s -> fn_12_basic_block_7:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_12_basic_block_6:s -> fn_12_basic_block_7:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_12_basic_block_7:s -> fn_12_basic_block_1:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_12_basic_block_0:s -> fn_12_basic_block_1:n [style="invis",constraint=true];
}
subgraph "cluster_dp_realloc" {
	style="dashed";
	color="black";
	label="dp_realloc ()";
	fn_11_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];

	fn_11_basic_block_1 [shape=Mdiamond,style=filled,fillcolor=white,label="EXIT"];

	fn_11_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|ret\ =\ 0B;\l\
|#\ DEBUG\ BEGIN_STMT\l\
|ret\ =\ realloc\ (ptr,\ n);\l\
|#\ DEBUG\ BEGIN_STMT\l\
|if\ (n\ !=\ 0)\l\
\ \ goto\ \<bb\ 3\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 5\>;\ [INV]\l\
}"];

	fn_11_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 3\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|if\ (ret\ ==\ 0B)\l\
\ \ goto\ \<bb\ 4\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 5\>;\ [INV]\l\
}"];

	fn_11_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 4\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|printf\ (\"%s():\ nil\ realloc\\n\",\ &__func__);\l\
|#\ DEBUG\ BEGIN_STMT\l\
|exit\ (1);\l\
}"];

	fn_11_basic_block_5 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 5\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|D.2328\ =\ ret;\l\
|return\ D.2328;\l\
}"];

	fn_11_basic_block_0:s -> fn_11_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_11_basic_block_2:s -> fn_11_basic_block_3:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_11_basic_block_2:s -> fn_11_basic_block_5:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_11_basic_block_3:s -> fn_11_basic_block_4:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_11_basic_block_3:s -> fn_11_basic_block_5:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_11_basic_block_5:s -> fn_11_basic_block_1:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_11_basic_block_0:s -> fn_11_basic_block_1:n [style="invis",constraint=true];
}
subgraph "cluster_dp_calloc" {
	style="dashed";
	color="black";
	label="dp_calloc ()";
	fn_10_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];

	fn_10_basic_block_1 [shape=Mdiamond,style=filled,fillcolor=white,label="EXIT"];

	fn_10_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|ret\ =\ 0B;\l\
|#\ DEBUG\ BEGIN_STMT\l\
|_1\ =\ nmemb\ *\ size;\l\
|if\ (_1\ ==\ 0)\l\
\ \ goto\ \<bb\ 3\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 4\>;\ [INV]\l\
}"];

	fn_10_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 3\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|_2\ =\ (int)\ size;\l\
|_3\ =\ (int)\ nmemb;\l\
|printf\ (\"%s():\ nmemb=%d,\ size=%d\ 0\ bytes\\n\",\ &__func__,\ _3,\ _2);\l\
}"];

	fn_10_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 4\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|ret\ =\ calloc\ (nmemb,\ size);\l\
|#\ DEBUG\ BEGIN_STMT\l\
|if\ (ret\ ==\ 0B)\l\
\ \ goto\ \<bb\ 5\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 6\>;\ [INV]\l\
}"];

	fn_10_basic_block_5 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 5\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|printf\ (\"%s():\ no\ memory\\n\",\ &__func__);\l\
|#\ DEBUG\ BEGIN_STMT\l\
|exit\ (1);\l\
}"];

	fn_10_basic_block_6 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 6\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|D.2322\ =\ ret;\l\
|return\ D.2322;\l\
}"];

	fn_10_basic_block_0:s -> fn_10_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_10_basic_block_2:s -> fn_10_basic_block_3:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_10_basic_block_2:s -> fn_10_basic_block_4:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_10_basic_block_3:s -> fn_10_basic_block_4:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_10_basic_block_4:s -> fn_10_basic_block_5:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_10_basic_block_4:s -> fn_10_basic_block_6:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_10_basic_block_6:s -> fn_10_basic_block_1:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_10_basic_block_0:s -> fn_10_basic_block_1:n [style="invis",constraint=true];
}
subgraph "cluster_dp_malloc" {
	style="dashed";
	color="black";
	label="dp_malloc ()";
	fn_9_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];

	fn_9_basic_block_1 [shape=Mdiamond,style=filled,fillcolor=white,label="EXIT"];

	fn_9_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|if\ (n\ ==\ 0)\l\
\ \ goto\ \<bb\ 3\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 4\>;\ [INV]\l\
}"];

	fn_9_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 3\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|printf\ (\"%s():\ 0\ malloc\\n\",\ &__func__);\l\
}"];

	fn_9_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 4\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|D.2316\ =\ dp_calloc\ (1,\ n);\l\
|return\ D.2316;\l\
}"];

	fn_9_basic_block_0:s -> fn_9_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_9_basic_block_2:s -> fn_9_basic_block_3:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_9_basic_block_2:s -> fn_9_basic_block_4:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_9_basic_block_3:s -> fn_9_basic_block_4:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_9_basic_block_4:s -> fn_9_basic_block_1:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_9_basic_block_0:s -> fn_9_basic_block_1:n [style="invis",constraint=true];
}
subgraph "cluster_dp_free" {
	style="dashed";
	color="black";
	label="dp_free ()";
	fn_8_basic_block_0 [shape=Mdiamond,style=filled,fillcolor=white,label="ENTRY"];

	fn_8_basic_block_1 [shape=Mdiamond,style=filled,fillcolor=white,label="EXIT"];

	fn_8_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 2\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|p\ =\ 0B;\l\
|#\ DEBUG\ BEGIN_STMT\l\
|if\ (ptr\ !=\ 0B)\l\
\ \ goto\ \<bb\ 3\>;\ [INV]\l\
else\l\
\ \ goto\ \<bb\ 4\>;\ [INV]\l\
}"];

	fn_8_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 3\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|free\ (ptr);\l\
goto\ \<bb\ 5\>;\ [INV]\l\
}"];

	fn_8_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 4\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|printf\ (\"%s():\ nil\ ptr\\n\",\ &__func__);\l\
|#\ DEBUG\ BEGIN_STMT\l\
}"];

	fn_8_basic_block_5 [shape=record,style=filled,fillcolor=lightgrey,label="{\<bb\ 5\>:\l\
|#\ DEBUG\ BEGIN_STMT\l\
|return;\l\
}"];

	fn_8_basic_block_0:s -> fn_8_basic_block_2:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_8_basic_block_2:s -> fn_8_basic_block_3:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_8_basic_block_2:s -> fn_8_basic_block_4:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_8_basic_block_3:s -> fn_8_basic_block_5:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_8_basic_block_4:s -> fn_8_basic_block_5:n [style="solid,bold",color=blue,weight=100,constraint=true];
	fn_8_basic_block_5:s -> fn_8_basic_block_1:n [style="solid,bold",color=black,weight=10,constraint=true];
	fn_8_basic_block_0:s -> fn_8_basic_block_1:n [style="invis",constraint=true];
}
}
